#!/bin/bash

# 定义变量
VM_USER="vagrant" # 虚拟机用户名
VM_HOSTS=("master" "worker1" "worker2") # 虚拟机主机名列表
SSH_KEYS=("/media/uni-orange/新加卷/infra/k8s/.vagrant/machines/master/virtualbox/private_key" "/media/uni-orange/新加卷/infra/k8s/.vagrant/machines/worker1/virtualbox/private_key" "/media/uni-orange/新加卷/infra/k8s/.vagrant/machines/worker2/virtualbox/private_key") # Vagrant 默认的 SSH 密钥路径
SCRIPT_FILE="cursor_k8s_step2.sh" # 要拷贝和运行的脚本文件

# 拷贝脚本到虚拟机并运行
for i in "${!VM_HOSTS[@]}"; do
  HOST=${VM_HOSTS[$i]}
  KEY=${SSH_KEYS[$i]}
  echo "正在处理虚拟机 $HOST..."

  # 获取虚拟机的 SSH 配置
  SSH_CONFIG=$(vagrant ssh-config $HOST)
  PORT=$(echo "$SSH_CONFIG" | grep Port | awk '{print $2}')
  HOSTNAME=$(echo "$SSH_CONFIG" | grep HostName | awk '{print $2}')

  echo "虚拟机 $HOST 的 IP 地址为 $HOSTNAME，端口为 $PORT，密钥为 $KEY"

  # 自动接受 SSH 主机密钥
  ssh-keyscan -H "$HOSTNAME" >> ~/.ssh/known_hosts

  # 拷贝脚本到虚拟机
  scp -i "$KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -P "$PORT" "$SCRIPT_FILE" "${VM_USER}@${HOSTNAME}:/home/${VM_USER}/"

  # 在虚拟机上运行脚本
  # 根据主机名决定以 Master 还是 Worker 方式运行脚本
  if [ "$HOST" == "master" ]; then
    # Master 节点
    ssh -i "$KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p "$PORT" "${VM_USER}@${HOSTNAME}" "chmod +x /home/${VM_USER}/${SCRIPT_FILE} && /home/${VM_USER}/${SCRIPT_FILE} master"
  else
    # Worker 节点
    echo "worker"
#    ssh -i "$KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p "$PORT" "${VM_USER}@${HOSTNAME}" "chmod +x /home/${VM_USER}/${SCRIPT_FILE} && /home/${VM_USER}/${SCRIPT_FILE} worker"
  fi

  echo "虚拟机 $HOST 上的脚本执行完成。"
done

echo "所有虚拟机上的脚本执行完成。"